package com.smart.consumer.feign;

import com.smart.consumer.common.reqeust.UserRequestParams;
import com.smart.consumer.common.response.ResponseVo;
import com.smart.consumer.common.vo.UserVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * 前端   浏览器 ----> 后台
 * value 注册中心注册的提供者的服务名/
 * path  请求接口的前缀路径
 * spring mvc
 * <p>
 * 两个注解
 * 一个Feign接口
 */
@FeignClient(value = "cloud-feign-addres", path = "/api/user")
public interface AddreesFeignApi {
    @GetMapping("/pro")
    ResponseVo<String> provider();

    /**
     * 方式方法  思想
     * <p>
     * 基本类型代参数  必须使用@RequestParam注解
     *
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/list")
    ResponseVo<UserVo> list(@RequestParam int page, @RequestParam int size);

    /**
     * get请求不支持对象参数
     *
     * @param requestParams
     * @return
     */
    @PostMapping("/register")
    ResponseVo<UserVo> register(@RequestBody UserRequestParams requestParams);

    @GetMapping("/detail/{uid}")
    ResponseVo<UserVo> detail(@PathVariable Integer uid);

    @GetMapping("/test")
    ResponseVo<Integer> test();

}
